home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1988 / 06 / fcode / mazil2.for < prev    next >
Text File  |  1987-09-03  |  12KB  |  168 lines

  1. C*  SUBROUTINE MAZIL2                                                   
  2. C*                                                                      
  3. C*       \PE HA\HA\EHA  \\ B\BO A -PA \KOB TA\\\\HO OR AHH\X            
  4. C*        \HK \\ ( C PABH\M \A-OM ) HA A \\                             
  5. C*                                                                      
  6. C*   OPMA\\H\E \APAMETP\:                                               
  7. C*                                                                      
  8. C*  L1   FIELD     - \T\M\ C\MBO\AM\ \\ ET \A\O\HEHO BCE \O\E -PA \KA   
  9. C*                   O\\\HO B KA\ECTBE FIELD \A AETC\ \PO\E\            
  10. C*  L1   EQSMBL    - \T\M\ C\MBO\AM\ \O \MO\\AH\8 \E\ATA8TC\ BCE        
  11. C*                   -PA \K\, \O \E\A\\E B\BO \                         
  12. C*  L    LEQ       - OTMEHA \MO\\AH\\ HA B\\OP C\MBO\OB, \C\O\\\\EM\X   
  13. C*                    \\ \E\AT\ -PA \KOB. \P\ LEQ = .FALSE.             
  14. C*                   COOTBETCTB\8\\E C\MBO\\ \\ \T HA\ EH\ B MACC\BE    
  15. C*                   SMBLS (CM.H\\E)                                    
  16. C*  INT  NFUN      - KO\\\ECBO  \HK \\, \O \E\A\\X B\BO \               
  17. C*                                                                      
  18. C*  INT  N         - \\C\O TO\EK -PA \KA, OTHOC\\\XC\ K O HO\           
  19. C*                    \HK \\ ( PABHO  \\ BCEX NFUN  \HK \\ )            
  20. C*  R    FUN       - TA\\\ A \HA\EH\\  \HK \\, \O \E\A\\X B\BO \        
  21. C*                   ( MATP\ A, CO EP\A\A\ NFUN CTO\\ OB \ N CTPOK )    
  22. C*  L1   SMBLS     - MACC\B, CO EP\A\\\ TA\\\ \ C\MBO\OB  \\  \E\AT\    
  23. C*                   -PA \KOB ( \P\ LEQ = .FALSE. ), \P\\EM BCE         
  24. C*                   C\MBO\\ MO-\T \\T\ PA\\\\H\M\                      
  25. C*  R8   LBX       - HA\A\HOE \HA\EH\E \EPEMEHHO\ X                     
  26. C*                                                                      
  27. C*  R8   STX       - \A- B O\\  X                                       
  28. C*                                                                      
  29. C*  R8   LBY       - H\\H\\    -PAH\ A B\BO \M\X \HA\EH\\ Y             
  30. C*                                                                      
  31. C*  R8   SCY       - \KA\A Y                                            
  32. C*                                                                      
  33. C*  INT  GR        - \E\AT\ CETK\ HA -PA \KE ( 0-HE \E\., 1-\O X,       
  34. C*                   2-\O Y, 3-\O X \ \O Y                              
  35. C*  INT  DIGY      - \E\AT\ O \ POBK\ OC\ Y  ( 0-HE \E\., 1-TO\\KO      
  36. C*                   BHA\A\E, 2-TO\\KO B KOH E, 3-BHA\A\E \ B KOH E )   
  37. C*  INT  GRINTX    - \HTEPBA\ CETK\ \O X ( \EPE\ GRINTX TO\EK X         
  38. C*                   \POBO \T\ \\H\8 CETK\ ).                           
  39. C*  INT  FSTNX     - HA\A\\HOE \HA\EH\E HOMEPA AP-\MEHTA X ( HOMEPA     
  40. C*                   TO\EK \E\ATA8TC\ HAP\ \ CO \HA\EH\\M\ X ).         
  41. C*  L    LALLX     - \E\ATAT\ BCE \HA\EH\\ AP-\MEHTA X ( LALLX=.TRUE.)  
  42. C*                   \\\ TO\\KO 'CETO\H\E' ( LALLX=.FALSE.)             
  43. C*                                                                      
  44. C*  INT  NEMP      - \\C\O \\CT\X CTPOK, BCTAB\\EM\X ME\ \ COCE H\M\    
  45. C*                   CTPOKAM\, CO EP\A\\M\ TO\K\ -PA \KA                
  46. C*                                                                      
  47. C*       V.V.KHOTKEVICH, A.V.KHOTKEVICH (PTILT AS UKRSSR)               
  48. C*            ISSUED      06.06.85                                      
  49. C*                                                                      
  50. C*                                                                      
  51.       SUBROUTINE MAZIL2 (FIELD,EQSMBL,LEQ,NFUN,N,FUN,SMBLS,LBX,STX,     
  52.      &                   LBY,SCY,GR,DIGY,GRINTX,FSTNX,LALLX,NEMP)       
  53. C                                                                       
  54.       INTEGER    NFUN,N,GR,DIGY,GRINTX,FSTNX,NEMP                       
  55.       LOGICAL*1  FIELD,EQSMBL,SMBLS(NFUN)                               
  56.       LOGICAL    LEQ,LALLX                                              
  57.       REAL       FUN(N,NFUN)                                            
  58.       REAL*8     LBX,STX,LBY,SCY                                        
  59. C                                                                       
  60.       INTEGER    GRX,GRY,GRXY,DIGYF,DIGYL,DIGYFL                        
  61.       INTEGER    NUM,NX,NJ,ARG,NN,J,I,II,POS,FCONTR,ALL,K               
  62.       LOGICAL*1  PALKA,HYPHEN,PLUS,S(101)                               
  63.       LOGICAL    GX,GY                                                  
  64.       REAL*8     RESY,X,E,GREEDY(11)                                    
  65.       REAL*8     DBLE                                                   
  66. C                                                                       
  67.    11 FORMAT(18X,11(1X,G9.3))                                           
  68.    22 FORMAT(19X,101A1)                                                 
  69.    33 FORMAT(9X,G9.3,1X,101A1)                                          
  70.    44 FORMAT(2X,I5,12X,101A1)                                           
  71.    55 FORMAT(2X,I5,2X,G9.3,1X,101A1)                                    
  72. C                                                                       
  73.       DATA       PALKA/1H|/, HYPHEN/1H-/, PLUS/1H+/                     
  74.       DATA       GRX/1/, GRY/2/, GRXY/3/, DIGYF/1/, DIGYL/2/, DIGYFL/3/ 
  75. C                                                                       
  76.       GX = .FALSE.                                                      
  77.       GY = .FALSE.                                                      
  78.       IF (GR .EQ. GRX .OR. GR .EQ. GRXY) GX = .TRUE.                    
  79.       IF (GR .EQ. GRY .OR. GR .EQ. GRXY) GY = .TRUE.                    
  80.       NUM = 0                                                           
  81.       NX = FSTNX                                                        
  82.       IF (NX .GT. 0) NUM = 2                                            
  83.       IF (NX .LE. 0) NX = 1                                             
  84.       ALL = 0                                                           
  85.       IF (LALLX) ALL = 1                                                
  86.       RESY = (SCY-LBY) * 1.D-2                                          
  87.       DO 10 I = 1, 11                                                   
  88.        GREEDY(I) = LBY +   DBLE(I-1) * (SCY-LBY) * 1.D-1                
  89.    10 CONTINUE                                                          
  90.       IF (DIGY .EQ. DIGYF .OR. DIGY .EQ. DIGYFL) WRITE(5,11) GREEDY     
  91.       NJ = 1                                                            
  92.       DO 200 J = 1, N                                                   
  93.         ARG = 1                                                         
  94.         DO 20 I = 2, 100                                                
  95.           S(I) = FIELD                                                  
  96.    20   CONTINUE                                                        
  97.         S(1)   = PALKA                                                  
  98.         S(101) = PALKA                                                  
  99.         X = LBX +   DBLE(J-1) * STX                                     
  100.         NN = J - 1 + NX                                                 
  101.         IF (.NOT. GY) GO TO 40                                          
  102.           DO 30 I = 2, 10                                               
  103.             II = (I-1) * 10 + 1                                         
  104.             S(II) = PALKA                                               
  105.    30     CONTINUE                                                      
  106.    40   CONTINUE                                                        
  107.         IF (J .EQ. 1 .OR. J .EQ. N) GO TO 42                            
  108.           IF (J .NE. (NJ-1)*GRINTX+1) GO TO 70                          
  109.    42   CONTINUE                                                        
  110.           IF (.NOT. LALLX) ARG = 2                                      
  111.           NJ = NJ + 1                                                   
  112.           IF (J .EQ. 1 .OR. J .EQ. N) GO TO 45                          
  113.             IF (.NOT. GX) GO TO 70                                      
  114.    45     CONTINUE                                                      
  115.           DO 50 I = 2, 100                                              
  116.             S(I) = HYPHEN                                               
  117.    50     CONTINUE                                                      
  118.           DO 60 I = 1, 11                                               
  119.             II = (I-1) * 10 + 1                                         
  120.             S(II) = PLUS                                                
  121.    60     CONTINUE                                                      
  122.    70   CONTINUE                                                        
  123.         DO 90 I = 1, NFUN                                               
  124.           E = (FUN(J,I) - LBY) / RESY + 1.D0                            
  125.           POS = E                                                       
  126.           II = E + 0.5D0                                                
  127.           IF (II .GT. POS) POS = POS + 1                                
  128.           IF (POS .LT. 1 .OR. POS .GT. 101) GO TO 80                    
  129.             S(POS) = SMBLS(I)                                           
  130.             IF (LEQ) S(POS) = EQSMBL                                    
  131.    80     CONTINUE                                                      
  132.    90   CONTINUE                                                        
  133.         FCONTR = ARG + ALL + NUM                                        
  134.         GO TO (100,110,120,130), FCONTR                                 
  135.   100   CONTINUE                                                        
  136.           WRITE(5,22) S                                                 
  137.           GO TO 140                                                     
  138.   110   CONTINUE                                                        
  139.           WRITE(5,33) X,S                                               
  140.           GO TO 140                                                     
  141.   120   CONTINUE                                                        
  142.           WRITE(5,44) NN,S                                              
  143.           GO TO 140                                                     
  144.   130   CONTINUE                                                        
  145.           WRITE(5,55) NN,X,S                                            
  146.   140   CONTINUE                                                        
  147.         IF (NEMP .LE. 0) GO TO 190                                      
  148.         IF (J .EQ. N) GO TO 190                                         
  149.           DO 180 I = 1, NEMP                                            
  150.             DO 150 II = 2, 100                                          
  151.               S(II) = FIELD                                             
  152.   150       CONTINUE                                                    
  153.             IF (.NOT. GY) GO TO 170                                     
  154.               DO 160 II = 2, 10                                         
  155.                 K = (II-1) * 10 + 1                                     
  156.                 S(K) = PALKA                                            
  157.   160         CONTINUE                                                  
  158.   170       CONTINUE                                                    
  159.             S(1)   = PALKA                                              
  160.             S(101) = PALKA                                              
  161.             WRITE(5,22) S                                               
  162.   180     CONTINUE                                                      
  163.   190   CONTINUE                                                        
  164.   200 CONTINUE                                                          
  165.       IF (DIGY .EQ. DIGYL .OR. DIGY .EQ. DIGYFL) WRITE(5,11) GREEDY     
  166.       RETURN                                                            
  167.       END                                                               
  168.